package commons.ihm;

import commons.data.I_Data;
import commons.drawing.couche.I_Couche;
import java.util.ArrayList;
import javax.swing.SwingUtilities;

public abstract class A_PanelTOC extends javax.swing.JPanel {

	// Panel à prévenir dès que cochage/décochage de couches etc.
	protected A_PanelCartoTocTools panel_Pere;

	// Déclare l'objet Data en cours d'utilisation dans l'interface
	abstract public void setData(I_Data dataToDisplay);

	// Renvoie un vecteur ordonné des couches que le panelCarto doit dessiner
	abstract public ArrayList<I_Couche> getVisibleCouches();

	// Renvoie toutes les couches mêmes celles non visibles
	abstract public ArrayList<I_Couche> getAllCouches();

	// Une TOC dérivée signale que l'utilisateur a modifié la sélection des couches
	// -> nécessite un redraw
	protected void changeInSelectedCouche() {

		// SIOUX : on fait un invokeLater car
		//  si changement de Tab dans la TOC, on appel d'abord un raffraichissement de
		//  l'arbre de selection en la vidant (sinon l'affichage peut planter si dessin d'objet sélectionné d'un autre tab (?))
		//  puis juste après, on appelle cette méthode : le repaintCarto peut ne plus se faire
		// l'invokeLater garanti un repaint
		// re ???
		
//		panel_Pere.repaintCarto();
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				panel_Pere.repaintCarto();
			}
		});
	}

    public A_PanelTOC(A_PanelCartoTocTools panel_Pere) {
        initComponents();
		this.panel_Pere = panel_Pere;
    }




    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 202, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 512, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables

}
